
// vector<int>   vec // i数由 j最大的 纯奇数累加的值

void IntergerSplit(vector<vector<int>> &vec)
{
	vector<int> path;
	for (int i = 1; i < vec.size(); i++)
	{
		for (int j = 1; j < vec[0].size(); j++)
		{

			if (i == 1 || j == 1)
			{
				vec[i][j] == 1;

			}
			else 
			{
				if (i == j)
				{
					vec[i][j] = vec[i][j - 1] + 1;
				}

				else if ((i-j) <j)
				{
					vec[i][j] = vec[i-j][i-j] + vec[i][j - 1];  //以 6 5为例=vec[1][5]+vec[6][4]    注意不同i对vec表示的意义差别
				}
				else 
				{
					vec[i][j] = vec[i-j][j] + vec[i][j - 1];///  注意这里总是取   i-j 与j的最小值
				}
			}

		}

	}
	
}


#include <algorithm>
#include <numeric>
void SplitOdd(vector<vector<int>>& vec ,int num,vector<int> &currPath,int index)
{
	int sum = accumulate(currPath.begin(), currPath.end(), 0);
	if (sum > num)
	{
		return ;
	}
   if (sum == num)
	{
		vec.push_back(currPath);
		return;
	}
	for (int i = index; i < num; i = i + 2)
	{
			currPath.push_back(i);
			SplitOdd(vec, num, currPath, i+2);
			currPath.pop_back();
	}
}